<?php
/**
 * 基础控制器
 * 必须继承自think\Controller.php
 */

namespace app\common\controller;
use app\admin\model\Site;
use app\common\model\ArtCate as ArtCateModel;
use app\common\model\Article;
use think\Controller;
use think\facade\Request;
use think\facade\Session;

class Base extends Controller
{
    /**
     * 初始化方法
     * 1.在所有方法之前调用
     * 2.常用来创建常量,公共方法等
     */
    protected function initialize()
    {
        //检测站点是否已关闭
        $this->is_open();

        //显示分类导航,在初始化中调用,可以确保所有页面都可以使用分类信息变量
        $this->showNav();

        $this->getHotArt();
    }
    # 显示分类导航
    protected function showNav(){
        $cateList = ArtCateModel::all(function($query){
            $query->where('status', 1)->order('sort', 'asc');
        });
        $this->view->assign('cateList', $cateList);
    }
    # 检查是否未登录：放在需要登录操作的方法的最前面，例如发布文章
    protected function isLogin(){
        if ( ! Session::has('user_id')){
            return $this->error('你还未登录','user/login');
        }
    }

    # 检查是否已登录，防止重复登录：放在登录验证方法中调用
    protected function logined(){
        if (Session::has('user_id')){
            return $this->error('你已经登录啦~~~','index/index');
        }
    }
    //检测站点是否已关闭:在公共控制器初始化方法中调用
    public function is_open(){
        $isOpen = Site::where('status',1)->value('is_open');
        if ($isOpen == 0 && Request::module() == 'index'){
            //或者写上:此域名出售
            $info = <<<'INFO'
            <body style="background-color:#333">
            <h1 style="color:#eee;text-align:center;margin:200px">站点维护中...</h1>
            </body>
INFO;
            exit($info);
        }
    }

    public function is_reg(){
        //1.获取当前站点的注册状态
        $isReg = Site::where('status', 1)->value('is_reg');
        //2. 如果已关闭注册,则直接跳转到首页
        if ($isReg == 0){
            return $this->error('注册已关闭', 'index/index');
        }
    }

    //根据阅读量PV排名来获取内容,放在前台的右侧显示:在初始化方法中进行调用
    public function getHotArt(){
        $hotArtList = Article::where('status',1)->order('pv','desc')->limit(12)->select();
        $this->view->assign('hotArtList', $hotArtList);
    }
}